package dinamico.persistencia.controller;

import dinamico.persistencia.entities.Usuario;
import javax.persistence.EntityManager;




public class UsuarioController
{

   private EntityManager entityManager;

    public UsuarioController(EntityManager entityManager)
    {
        this.entityManager = entityManager;
    }

    public Usuario findUsuarioByid(int codUser) throws Exception
    {
        Usuario user = new Usuario();
        try
        {
            javax.persistence.Query query = entityManager.createQuery
                ("select c from usuario as c where c.id = " + codUser);
            user =  (Usuario) query.getSingleResult();
            return user;
        }
        catch(Exception ex)
        {
            ex.fillInStackTrace();
            return null;
        }
    }

    public boolean deleteUsuario(int id) throws Exception
    {
        try
        {
            entityManager.getTransaction().begin();
            Usuario usuarioToDelete =
                    entityManager.find(Usuario.class, id);
            entityManager.remove(usuarioToDelete);
            entityManager.getTransaction().commit();
            return true;
        }
        catch (Exception ex)
        {
            if (entityManager.getTransaction().isActive())
            {
                entityManager.getTransaction().rollback();
            }
            return false;
        }
    }



    public boolean insertUsuario(Usuario usuario) throws Exception
    {
        try
        {
            entityManager.getTransaction().begin();
            entityManager.persist(usuario);
            entityManager.getTransaction().commit();
            return true;
        }
        catch(Exception ex)
        {
           if (entityManager.getTransaction().isActive())
           {
                entityManager.getTransaction().rollback();
           }
           ex.printStackTrace();
           return false;
        }
    }

    public Usuario findUsuarioByLoginAndPasword(String login, String password) throws Exception
    {
        Usuario user = new Usuario();
        try
        {
            javax.persistence.Query query = entityManager.createQuery
                ("select c from usuario as c where c.login = " + login + " and where c.password = " + password);
            user =  (Usuario) query.getSingleResult();
            return user;
        }
        catch(Exception ex)
        {
            ex.fillInStackTrace();
            return null;
        }
    }

}
